#include "db.hpp"
#include <muduo/base/Logging.h>

using namespace std;


MySQL::MySQL()
{
    conn_ = mysql_init(nullptr);
}

MySQL::~MySQL()
{
    if (conn_) {
        mysql_close(conn_);
    }
}

bool MySQL::connect(const std::string &server, const std::string &user, 
        const std::string &pwd, const std::string &db)
{
    MYSQL *p = mysql_real_connect(conn_, server.c_str(), 
        user.c_str(), pwd.c_str(), db.c_str(), 3306, nullptr, 0);

    if (p != nullptr) {
        mysql_query(conn_, "set names gbk");
    }
    return p;
}

bool MySQL::update(const std::string &sql)
{
    return !mysql_query(conn_, sql.c_str());
}

MYSQL_RES *MySQL::query(const std::string &sql)
{
    MYSQL_RES *res;

    do {
        res = nullptr;
        if (mysql_query(conn_, sql.c_str())) {
            LOG_ERROR << __FILE__ << ":" << __LINE__ << " query failed" << sql;
            break;
        }
        res = mysql_use_result(conn_);
    } while (0);

    return res;
}

 MYSQL *MySQL::getConnection()
 {
    return conn_;
 }